<?php 
/** 
 * 把数组排成最小的数
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
 * 解法一，全排列，求最小的值
 * 解法二，两两连接，[A, B, C] = [min(AB,BA), C] = ....
 */


function PrintMinNumber($numbers)
{
    if (!is_array($numbers) || empty($numbers)) {
    	exit('参数错误');
    }
    $len = count($numbers);
    $min = $numbers[0];
    for ($i = 1; $i < $len; $i++) {
    	$min = compore($min, $numbers[$i]);
    }
    return $min;
}


function compore($min, $num)
{
	$num1 = intval($min.$num);
    $num2 = intval($num.$min);
    return min($num1, $num2);
}

$arr = [3,32,321];
var_dump(PrintMinNumber($arr));
